package cn.iocoder.yudao.module.wms.service.pomain;

import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.wms.controller.admin.pomain.vo.*;
import cn.iocoder.yudao.module.wms.dal.dataobject.pomain.PomainDO;
import cn.iocoder.yudao.module.wms.dal.dataobject.pomain.PomainsDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;

/**
 * 采购订单主 Service 接口
 *
 * @author 芋道源码
 */
public interface PomainService {

    /**
     * 创建采购订单主
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Integer createPomain(@Valid PomainSaveReqVO createReqVO);

    /**
     * 更新采购订单主
     *
     * @param updateReqVO 更新信息
     */
    void updatePomain(@Valid PomainSaveReqVO updateReqVO);
    /**
     * 删除采购订单主
     *
     * @param id 编号
     */
    void deletePomain(Integer id);
    /**
     * 获得采购订单主
     *
     * @param id 编号
     * @return 采购订单主
     */
    PomainDO getPomain(Integer id);

    /**
     * 获得采购订单主分页
     *
     * @param pageReqVO 分页查询
     * @return 采购订单主分页
     */
    PageResult<PomainDO> getPomainPage(PomainPageReqVO pageReqVO);

    // ==================== 子表（采购订单子） ====================

    /**
     * 获得采购订单子列表
     *
     * @param pid 主表ID
     * @return 采购订单子列表
     */
    List<PomainsDO> getPomainsListByPid(Integer pid);
    void updatePomainStatus(PomainSaveReqVO pomainSaveReqVO);
    PomainDO findByProcessInstanceId(String processInstanceId);
    void businessProcessing(PomainDO pomainDO,List<PomainsDO> pomainsDOList);
    List<PomainsRespVO> findPomainsByPid(Integer pid);
    List<PomainRespVO> list(PomainPageReqVO pageReqVO);
    PomainsRespVO findPomainsById(Integer id);
    void updatePomains(PomainsRespVO pomainsDO);
    List<PomainsRespVO> findPomainsOperateList(Integer pid);
    void process(Integer pomainId);

    List<PomainsRespVO> getPomainsOperateListByParams(PomainsRespVO pomainsRespVO);

}